<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /*
            总结：
                a. 函数的形参如果在有可能接收不到数据的情况下，可以给默认值
                        如果有接收到数据，以接收到的数据为准
                b. rest参数，接收函数剩余的形参
                        返回的是一个真的数组，可以调用数组的任意方法
                        可以接收后面的剩余，但是不能先剩余再接收
        */

        // 1. 函数新特性 - 参数默认值
        function fn(a = 0, b = 0) {
            return a + b
        }
        console.log(fn(1, 2));


        // 2. 函数新特性 - rest 参数
        // function func() {
        //     console.log(arguments);
        //     for (var i = 0; i < arguments.length; i++) {
        //         console.log(arguments[i]);
        //     }
        // }

        // 这种用法就叫做rest参数，剩余参数
        // 得到的结果是真数组
        function func(n1, n2, ...list) {
            // console.log(list);
            var num = list.reduce(function (a, b) {
                return a + b
            })
            console.log(num);
        }

        func(4, 5, 6, 7, 8, 9);

    </script>
</body>

</html>